package com.codingvip.queue;

import java.util.LinkedList;
import java.util.Queue;

//用两个队列实现一个栈的功能
//入栈：将元素进队列1
//出栈：判断队列1红元素的个数是否为1，如果等于1，则出队列，否则将队列1中的元素，
//以此出队列并放入队列2，直到队列1中的元素留下一个，然后队列1出队列，再把，队列2中的元素出队列以此放入队列1中。
public class Queue2Stack {
    private Queue<Integer> q1 = new LinkedList<Integer>();
    private Queue<Integer> q2 = new LinkedList<Integer>();

    //入栈
    public void push(int value) {
			q1.add(value);
    }
    public Integer  pop() {
		if (q1.isEmpty()) {
			return -1;
		}
		if (q1.size() == 1) {
			return  q1.remove();
		}
		while (q1.size() > 1) {
			q2.add(q1.remove());
		}
		int value = q1.remove();
		while (!q2.isEmpty()) {
			q1.add(q2.remove());
		}
		return value;
	}

	public static void main(String[] args) {
		Queue2Stack s=new Queue2Stack();
		s.push(1);
		s.push(2);
		s.push(3);
		System.out.println("出栈："+s.pop());
		s.push(4);

		System.out.println("出栈："+s.pop());
		System.out.println("出栈："+s.pop());

	}

}

